const http = require('http');
const fs = require('fs');
const querystring = require('querystring');
const path = require('path');
const server = http.createServer();
server.listen(4000, () => {
    console.log('图书管理服务器玩命启动中');

})
server.on('request', (req, res) => {
    // 获取请求的url和method
    let url = req.url;
    let method = req.method;
    // OCRS方案 : 解决跨域
    res.setHeader('Access-Content-Allow-Origin','*');
    //读取所有的书籍内容
    // 对于json文件来说,可以用require加载
    // let books = require('./book.json');//得到js数组
    // 判断
    if (method === 'GET' && url === '/api/getbooks') {
        // 客户端需要得到所有的书籍
        // 读取所有的书籍
        // 把读取的结果响应给客户端
        fs.readFile(path.join(__dirname, 'book.json'), 'utf-8', (err, books) => {
            let result = {
                status: 200,
                msg: '获取成功',
                data: JSON.stringify(books)
            }
            res.writeHead(200, {
                'Author': 'LQ',
                'Content-Type': 'application/json;charset=utf-8'
            })
            // res.end(JSON.stringify(result));
            res.end(JSON.stringify(result));
        })

    } else if (method === 'GET' && url.startsWith('/api/delbook')) {
        //说明客户端希望删除这本书
        // console.log(123);
        let id = req.url.replace(/\D/g, '');
        // 得到id值
        let result = books.filter(item => item.id != id);
        // console.log(result);
        // 存放结果
        fs.writeFile(path.join(__dirname, 'book.json'), JSON.stringify(result), err => {
            if (err) {
                console.log(err);
                res.end(JSON.stringify({ status: 400, msg: '删除失败' }));

            } else {
                res.end(JSON.stringify({ status: 200, msg: '删除成功!' }))
            }
        })


    } else if (method === 'GET' && url === '/api/addbook') {
        //客户端需要添加一本书

        // 1.接收数据
        // 1.1 定义空字符串,存放接收的结果
        let str = '';
        // 1.2注册req的data事件,接收数据
        req.on('data', chunk => {
            str += chunk;
        })
        // 1.3 注册req的end事件,当触发事件时,表示接收数据完成
        req.on('end', () => {
            console.log(str);
            // 2.存储数据
            // 2.1把查询字符串转成对象
            let newBook = querystring.parse(str);//转成对象
            // 2.2先读取再push
            fs.readFile(path.join(__dirname,'book.json'),'utf-8',(err,books)=>{
                books = JSON.parse(books);
                books.push(newBook);
            })
            // 2.3把最终的结果保存
            // 3.响应请求,添加成功或失败
        })

    } else {
        // 处理客户端的未知请求地址
        res.writeHead(404, {
            'Content-Type': 'text/html;charset=utf-8'
        })
        res.end('<div style="position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); font-size:300px; color:red;">404</div>')




    }
});